package Management;


import java.util.ArrayList;
import java.util.List;

import bean.dao.*;
import Entities.*;
import paquetes.enums.TipoFragilidad;
import paquetes.enums.TipoPeligrosidad;
import paquetes.negocioVO.*;


public class ManagementManifiestoDeCarga {

	private static ManagementManifiestoDeCarga instancia;
	
	public static ManagementManifiestoDeCarga getInstancia(){
		if(instancia == null)
			instancia = new ManagementManifiestoDeCarga();
		return instancia;
	}
	
	public ManifiestoDeCargaVO ManifiestoDeCargaEntitieAVO(ManifiestoDeCarga manifiestoDeCarga) {
		
		if (manifiestoDeCarga.getClass().getName().equalsIgnoreCase("ManifiestoporCargaManual")){
			
			ManifiestoPorCargaManualVO manifiestoDeCargaVO = new ManifiestoPorCargaManualVO();
			manifiestoDeCargaVO.setDimensionX(manifiestoDeCarga.getDimensionX());
			manifiestoDeCargaVO.setDimensionY(manifiestoDeCarga.getDimensionY());
			manifiestoDeCargaVO.setDimensionZ(manifiestoDeCarga.getDimensionZ());
			manifiestoDeCargaVO.setFragilidad(manifiestoDeCarga.getFragilidad());
			manifiestoDeCargaVO.setIndicacionesManejoCarga(manifiestoDeCarga.getIndicacionesManejoCarga());
			//manifiestoDeCargaVO.setEscaneo(manifiestoDeCarga.getEscaneo());
			manifiestoDeCargaVO.setPeligrosidad(manifiestoDeCarga.getPeligrosidad());
			return manifiestoDeCargaVO;	
			
		}else{
		
			ManifiestoPorLogisticaVO manifiestoDeCargaVO = new ManifiestoPorLogisticaVO();
			manifiestoDeCargaVO.setDimensionX(manifiestoDeCarga.getDimensionX());
			manifiestoDeCargaVO.setDimensionY(manifiestoDeCarga.getDimensionY());
			manifiestoDeCargaVO.setDimensionZ(manifiestoDeCarga.getDimensionZ());
			manifiestoDeCargaVO.setFragilidad(manifiestoDeCarga.getFragilidad());
			manifiestoDeCargaVO.setIndicacionesManejoCarga(manifiestoDeCarga.getIndicacionesManejoCarga());
			//manifiestoDeCargaVO.setEscaneo(manifiestoDeCarga.getEscaneo());
			manifiestoDeCargaVO.setPeligrosidad(manifiestoDeCarga.getPeligrosidad());
			return manifiestoDeCargaVO;
			
		}	
		
		
	}
	
	public ManifiestoDeCarga VOAEntitie(ManifiestoDeCargaVO manifiestoDeCargaVO){
		
		if (manifiestoDeCargaVO.getClass().getName().equals("ManifiestoPorCargaEventual")){
		
		ManifiestoPorCargaManual manifiestoDeCarga = new ManifiestoPorCargaManual();
		manifiestoDeCarga.setDimensionX(manifiestoDeCargaVO.getDimensionX());
		manifiestoDeCarga.setDimensionY(manifiestoDeCargaVO.getDimensionY());
		manifiestoDeCarga.setDimensionZ(manifiestoDeCargaVO.getDimensionZ());
		manifiestoDeCarga.setFragilidad(manifiestoDeCargaVO.getFragilidad());
		manifiestoDeCarga.setIndicacionesManejoCarga(manifiestoDeCargaVO.getIndicacionesManejoCarga());
		//manifiestoDeCargaVO.setEscaneo(manifiestoDeCarga.getEscaneo());
		manifiestoDeCarga.setPeligrosidad(manifiestoDeCargaVO.getPeligrosidad());
		return manifiestoDeCarga;
		
		}else{
			
		ManifiestoPorLogistica manifiestoDeCarga = new ManifiestoPorLogistica ();
		manifiestoDeCarga.setDimensionX(manifiestoDeCargaVO.getDimensionX());
		manifiestoDeCarga.setDimensionY(manifiestoDeCargaVO.getDimensionY());
		manifiestoDeCarga.setDimensionZ(manifiestoDeCargaVO.getDimensionZ());
		manifiestoDeCarga.setFragilidad(manifiestoDeCargaVO.getFragilidad());
		manifiestoDeCarga.setIndicacionesManejoCarga(manifiestoDeCargaVO.getIndicacionesManejoCarga());
		//manifiestoDeCargaVO.setEscaneo(manifiestoDeCarga.getEscaneo());
		manifiestoDeCargaVO.setPeligrosidad(manifiestoDeCargaVO.getPeligrosidad());
		return manifiestoDeCarga;
					
		}
	
	}

	public void guardarManifiestoDeCarga(byte[] escaneo, String tipoFragilidad,
			String tipoPeligrosidad, int dimensionX, int dimensionY,
			int dimensionZ, int refrigeracion, String indicaciones) {
		
		
		ManifiestoPorCargaManual manifiestoDeCarga = new ManifiestoPorCargaManual();
		manifiestoDeCarga.setEscaneo(escaneo);
		manifiestoDeCarga.setDimensionX(dimensionX);
		manifiestoDeCarga.setDimensionY(dimensionY);
		manifiestoDeCarga.setDimensionZ(dimensionZ);
		manifiestoDeCarga.setFragilidad(TipoFragilidad.valueOf(tipoFragilidad));
		manifiestoDeCarga.setIndicacionesManejoCarga(indicaciones);
		manifiestoDeCarga.setPeligrosidad(TipoPeligrosidad.valueOf(tipoPeligrosidad));
		
		
		ManifiestoDeCargaDAO miManifiestoDeCargaDAO = new ManifiestoDeCargaDAO();
		
		miManifiestoDeCargaDAO.altaManifiestoDeCarga(manifiestoDeCarga);
		
				
	}
	/*
	
	public void modificarManifiestoDeCarga(int id,String tipo,String nombre,String documento,String telefonocontacto,DomicilioVO domicilio) {
		if (tipo.equals("ManifiestoDeCargaEventual")){
			
			ManifiestoDeCargaEventual ManifiestoDeCarga = new ManifiestoDeCargaEventual();
			ManifiestoDeCargaDAO miManifiestoDeCargaDAO = new ManifiestoDeCargaDAO();
			ManifiestoDeCarga.setId(id);
			ManifiestoDeCarga.setNombre(nombre);
			System.out.println(nombre);
			ManifiestoDeCarga.setDocumento(documento);
			ManifiestoDeCarga.setTelefonoContacto(telefonocontacto);
			ManifiestoDeCarga.setDomicilio(ManagementDomicilio.getInstancia().VOAEntitie(domicilio));
			miManifiestoDeCargaDAO.actualizarManifiestoDeCarga(ManifiestoDeCarga);
			
			
			}else{
				
			ManifiestoDeCargaRegular ManifiestoDeCarga = new ManifiestoDeCargaRegular();
			ManifiestoDeCargaDAO miManifiestoDeCargaDAO = new ManifiestoDeCargaDAO();
			ManifiestoDeCarga.setId(id);
			ManifiestoDeCarga.setNombre(nombre);
			ManifiestoDeCarga.setDocumento(documento);
			ManifiestoDeCarga.setTelefonoContacto(telefonocontacto);
			ManifiestoDeCarga.setDomicilio(ManagementDomicilio.getInstancia().VOAEntitie(domicilio));
			miManifiestoDeCargaDAO.actualizarManifiestoDeCarga(ManifiestoDeCarga);
				
			
				
			}
	}
*/
	public void bajaManifiestoDeCarga(int id) {
		ManifiestoDeCargaDAO miManifiestoDeCargaDAO = new ManifiestoDeCargaDAO();
		miManifiestoDeCargaDAO.bajaManifiestoDeCarga(id);
	}

	public List<ManifiestoDeCargaVO> dameManifiestoDeCargas() {
		try {
			ManifiestoDeCargaDAO miManifiestoDeCarga = new ManifiestoDeCargaDAO();
			List<ManifiestoDeCarga> ManifiestoDeCargas = miManifiestoDeCarga.getManifiestosDeCargas();
			List<ManifiestoDeCargaVO> ManifiestoDeCargasVO = new ArrayList<ManifiestoDeCargaVO>();
			for (int i=0;i<ManifiestoDeCargas.size();i++)
			{
				ManifiestoDeCargaVO c = this.ManifiestoDeCargaEntitieAVO(ManifiestoDeCargas.get(i));
				ManifiestoDeCargasVO.add(c);
			}
			return ManifiestoDeCargasVO;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public ManifiestoDeCargaVO dameManifiestoDeCarga(int id) {
		try {
			ManifiestoDeCargaDAO miManifiestoDeCarga = new ManifiestoDeCargaDAO();
			ManifiestoDeCarga mc = miManifiestoDeCarga.getManifiestoDeCarga(id);
			if (mc==null)
				return null;
			ManifiestoDeCargaVO c = this.ManifiestoDeCargaEntitieAVO(mc);
			return c;
			
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}
	
	
}

